home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / com / othernet / fidonet / aval_377 / develop / fm_test.c < prev    next >
C/C++ Source or Header  |  1996-07-19  |  3KB  |  114 lines

  1. #include <stdio.h>
  2. #include <aes.h>
  3. #include <tos.h>
  4. #include <stddef.h>
  5. #include <string.h>
  6. #include <magx.h>
  7. #include <fido_msg.h>
  8.  
  9. #define FALSE    0
  10. #define TRUE    1
  11.  
  12. int ap_id,
  13.         has_appl_search=FALSE;
  14.  
  15. int getcookie (long cookie,long *p_value)
  16. {    long oldstack = 0L,*cookiejar;
  17.     if (!Super ((void *)1L)) oldstack = Super (0L);
  18.     cookiejar = *((long **)0x5a0L);
  19.     if (oldstack) Super ((void *)oldstack);
  20.     if (!cookiejar) return 0;
  21.     do
  22.     {    if (cookiejar[0] == cookie)
  23.         {    if (p_value)
  24.                 *p_value = cookiejar[1];
  25.             return 1;
  26.         }
  27.         else
  28.             cookiejar = &(cookiejar[2]);
  29.     }
  30.     while (cookiejar[-2]);
  31.     return 0;
  32. }
  33.  
  34. void send_msg(int id_to,long info)
  35. {    int pipe[8];
  36.     pipe[0] = FIDO_MSG;
  37.     pipe[1] = ap_id;
  38.     pipe[2] = 0;
  39.     *((long *) &pipe[3]) = 'FTST';            /* own ID (dummy value) */
  40.     *((long *) &pipe[5]) = info;
  41.     pipe[7] = 0;
  42.     appl_write(id_to,16,pipe);
  43. }
  44.  
  45. void send_to(char *prg,long info)
  46. {    int rc,id,type;
  47.     char program[128];
  48.     if (has_appl_search)
  49.     { rc = appl_search(0,program,&type,&id);
  50.         while( rc )
  51.         {    if ( !strncmpi(program,prg,8) && id!=ap_id )
  52.                 send_msg(id,info);
  53.             rc = appl_search(1,program,&type,&id);
  54.         }
  55.     }
  56.     else
  57.     { id = appl_find(prg);
  58.         if ( id>=0 && id!=ap_id )
  59.             send_msg(id,info);
  60.     }
  61. }
  62.  
  63. void main(void)
  64. {    int pipe[8],which,mx,my,mb,ks,kr,br,
  65.             aes_version,i,j;
  66.     long value;
  67.     MAGX_COOKIE *MagX;
  68.  
  69.     ap_id=appl_init();
  70.     aes_version = _GemParBlk.global[0];
  71.  
  72. /*
  73. **    Test, if multitasking environment
  74. */
  75.  
  76.     MagX = getcookie( 'MagX', &value ) ? (MAGX_COOKIE *) value : NULL;
  77.     if ( aes_version>=0x400 ||
  78.              wind_get(0,'WX',&i,&i,&i,&i)=='WX'    ||
  79.              (MagX && MagX->aesvars && MagX->aesvars->version>=0x200) )
  80.     {    if (appl_getinfo(4,&i,&i,&j,&i))
  81.             has_appl_search = j ? TRUE : FALSE;
  82.     }
  83.  
  84. /*
  85. **    Send FidoMessage 'FM' with command ???_INFO to all AVALON and
  86. **    LED tasks
  87. */
  88.  
  89.     send_to("LED     ",LED_INFO);
  90.     send_to("AVALON  ",AVAL_INFO);
  91.  
  92. /*
  93. **    Wait 5 sec. for returning 'FI' FIDO_INFO message
  94. */
  95.  
  96.     do
  97.     { which = evnt_multi(MU_MESAG|MU_TIMER,
  98.                                           2,1,1,0,0,0,0,0,0,0,0,0,0,pipe,
  99.                                            5000,0,
  100.                                             &mx,&my,&mb,&ks,&kr,&br);
  101.         printf("--------\n");
  102.         if (which & MU_MESAG)
  103.         {    printf("Message type: %c%c \n",pipe[0] >> 8,pipe[0]);
  104.             printf("From program: %u  (appl_init) \n",pipe[1]);
  105.             printf("From program: %c%c%c%c \n",pipe[3] >> 8,pipe[3],pipe[4] >> 8,pipe[4]);
  106.             printf("Prog.version: %#4x \n",pipe[5]);
  107.             printf("Command rev : %#4x \n",pipe[6]);
  108.         }    
  109.      }
  110.   while (which & MU_MESAG);
  111.  
  112.     appl_exit();
  113. }
  114.